variables.tf 와 *.tfvars 의 차이

variables.tf 와 *.tfvars 의 차이

Clock Icon2024.12.20

안녕하세요. 클래스메소드의 서은우입니다.

테라폼에서는 variables.tf 파일과 *.tfvars 파일을 통해 변수를 선언하고 값을 할당하여 변수를 재사용할 수 있는데요,
이 둘은 어떻게 다른지 그 차이에 대해서 알아보도록 하겠습니다.

variables.tf 파일

variables.tf 파일은 여러 변수의 이름과 값을 정의하는 데 사용됩니다.
테라폼 코드를 작성할 때, 다른 테라폼 파일에서 variables.tf 에 정의된 변수들을 참조하여 재사용할 수 있습니다.

아래의 예시 코드를 보겠습니다.

# variables.tf

# 변수 선언: variable "변수명"
variable "vpc_cidr" {
    # 변수에 대한 설명
    description = "VPC CIDR block"
    # 변수의 타입
    type = string
    # 변수의 기본 값
    default = "192.168.0.0/16"
}

변수를 선언할 때, variable 블록을 사용하여 변수를 선언할 수 있습니다.

  • 변수명: variable 키워드 뒤에는 변수명을 지정합니다. 변수명은 고유해야하며 내부에서 변수의 값을 참조할 때 사용할 수 있습니다.
  • description: 필요에 따라 변수에 대한 설명을 작성할 수 있습니다.
  • type: 해당 변수의 타입을 정의할 수 있습니다. 만약 type 이 정의 되지 않은 경우에는 모든 type의 값을 변수에 할당할 수 있습니다.
  • default: 기본으로 사용할 값입니다.

이렇듯 variables.tf 파일 안에 변수의 타입과 기본 값들을 정의해두면 variables.tf 만을 사용하여 테라폼을 배포할 수 있습니다.

하지만 prd, dev와 같이 여러 환경들을 테라폼으로 배포할 때, 대상 환경에 따라 변수의 값들을 다르게 해야한다면 어떻게 해야할까요?
이때 사용할 수 있는 것이 *.tfvars 파일입니다.

*.tfvars 파일

*.tfvars 파일은 실제 변수에 값을 할당하기 위한 것으로 variables.tf 에 선언된 변수를 초기화할 수 있습니다.
예를 들어 아래와 같이 *.tfvars 를 작성하여 각 환경에 따라 다른 변수 값을 할당할 수 있습니다.

# /prd/terraform.tfvars

vpc_cidr = "10.10.0.0/16"
# /dev/terraform.tfvars

vpc_cidr = "172.16.0.0/16"

테라폼은 tfvars 파일을 로딩할 때, terraform.tfvars 파일을 기본적으로 로드하도록 설정되어 있기 때문에 파일명을 terraform 로 tfvars 파일을 생성해주세요.

작성 방법은 "변수명 = 값"으로, variables.tf 에 선언되어 있는 변수만을 대상으로 값을 할당할 수 있습니다.

끝으로

variables.tf과 *.tfvars에 대해서는 아래와 같이 요약할 수 있습니다.

  • variables.tf: 변수를 선언하는 파일, 값을 할당할 수도 할당하지 않을 수도 있음.
  • *.tfvars: variables.tf에서 변수에 값을 할당하는 파일.

필요한 변수가 많지 않은 경우 variables.tf 한 곳에서 변수를 선언하고 값을 할당하여 테라폼을 배포해도 문제는 없습니다.

하지만 많은 수의 변수를 다뤄야할 경우, *.tfvars 파일도 작성하여 변수의 선언 / 값의 할당을 분리해 둔다면 가독성을 더욱 높일 수 있다고 생각합니다.

Share this article

facebook logohatena logotwitter logo

© Classmethod, Inc. All rights reserved.